/**
 * 题目描述
 * 
 * 说出下列代码最终输出的结果，并解释原因
 */

var a = 10
var obj = {
    a: 20,
    fn () {
        setTimeout(() => console.log(this.a))
    }
}
obj.fn() // 20

//原因： 箭头函数体内的this对象，就是定义时所在的对象，而不是使用时所在的对象。
//       箭头函数本身并没有this对象，它的this就是定义时外层代码块的this,上面
//       的代码等同于如下代码
//       var a = 10
//       var obj = {
//          a: 20,
//          fn () {
//              let _this = this
//              setTimeout(function () {
//                 console.log(_this.a)
//              })
//          }
//       }
//       obj.fn()